import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace PerBusinessFamilyEmploymentApi {
  /** 从业情况业务表信息 */
  export interface BusinessFamilyEmployment {
    id: number; // 主键ID
    busiId?: string; // 业务主表id
    familyEmploymentId: number; // 从业情况ID
    employeeId?: number; // 人员ID，对应 per_employee_id
    relation: string; // 与本人关系（称谓）
    systemPersonId: number; // 系统人员ID，对应system_person.id
    familyName: string; // 姓名
    cardType: string; // 证件类型
    familyIdcard: string; // 证件号码
    employerName: string; // 单位名称
    employerType: string; // 单位性质
    positionName: string; // 职务
    isSeniorPosition: number; // 是否担任高级职务（1：是，0：否）
    isLiveTogether: number; // 是否共同生活（1：是，0：否）
    isEmployed: number; // 是否在职（1：是，0：否）
    status: number; // 是否有效（1：有效，0：无效）
    remarks: string; // 备注
    changeType: string; // 变更类型（add：新增，update：修改，delete：删除）
    changeContent: string; // 变更内容(JSON格式，记录变更前后对比，只有修改的时候记录)
    auditStatus: number; // 审核状态（0 草稿 1 审核中 2 审核完成）
    finalAuditStatus: number; // 最终审核状态：0 待审核 1 审核通过 2 审核不通过
    auditTime: string | Dayjs; // 审核完成时间
    auditor: string; // 审核人
    auditComment: string; // 审核意见
    metadata: string; // 其他参数
  }
}

/** 查询从业情况业务表分页 */
export function getBusinessFamilyEmploymentPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment>
  >('/per/business-family-employment/page', data, {
    desensitize,
    encrypt,
  });
}

/** 查询从业情况业务表详情 */
export function getBusinessFamilyEmployment(params: { id: number }) {
  return requestClient.get<PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment>(
    `/per/business-family-employment/get?id=${params.id}`,
  );
}

/** 新增从业情况业务表 */
export function createBusinessFamilyEmployment(
  data: PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment,
) {
  return requestClient.post('/per/business-family-employment/create', data);
}

/** 修改从业情况业务表 */
export function updateBusinessFamilyEmployment(
  data: PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment,
) {
  return requestClient.put('/per/business-family-employment/update', data);
}

/** 删除从业情况业务表 */
export function deleteBusinessFamilyEmployment(params: { id: number }) {
  return requestClient.delete(
    `/per/business-family-employment/delete?id=${params.id}`,
  );
}

/** 批量删除从业情况业务表 */
export function deleteBusinessFamilyEmploymentList(ids: number[]) {
  return requestClient.delete(
    `/per/business-family-employment/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出从业情况业务表 */
export function exportBusinessFamilyEmployment(params: any) {
  return requestClient.download(
    '/per/business-family-employment/export-excel',
    { params },
  );
}

/** 根据业务主表id去查询业务数据 */
export function getFamilyEmploymentBusiId(data: any) {
  return requestClient.post<PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment>(
    `/per/business-family-employment/getFamilyEmploymentBusiId`,
    data,
  );
}

/** 获取当前登录人家庭成员从业情况 */
export function getCurrentFamilyEmployment(
  data,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    List<PerBusinessFamilyEmploymentApi.BusinessFamilyEmployment>
  >('/per/business-family-employment/getCurrentFamilyEmployment', data, {
    desensitize,
    encrypt,
  });
}
